{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "导入必要工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "导入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "path = 'Desktop/RentListingInquries/code/data/'\n",
    "test = pd.read_csv(path+'RentListingInquries_FE_test.csv')\n",
    "train = pd.read_csv(path+'RentListingInquries_FE_train.csv')\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "分离训练数据的x和y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "x_train = train.drop('interest_level',axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "构造一个寻找最佳n_estimators的函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3       #因为是三类分类问题\n",
    "    \n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "    #直接采用xgb的cv函数\n",
    "    \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:11: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  # This is added back by InteractiveShellApp.init_path()\n"
     ]
    }
   ],
   "source": [
    "#除n_estimators外的其他参数暂时不变\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate = 0.1,\n",
    "        n_estimators=1000,\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma = 0,\n",
    "        objective='multi:softprob',\n",
    "        seed=3\n",
    ")\n",
    "modelfit(xgb1,x_train,y_train,cv_folds=kfold)\n",
    "cvresult = pd.DataFrame.from_csv(\"1_nestimators.csv\")#将结果保存到csv文件里"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f09433ee80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#将n_estimators结果可视化\n",
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>n_estimators</th>\n",
       "      <th>test-mlogloss-mean</th>\n",
       "      <th>test-mlogloss-std</th>\n",
       "      <th>train-mlogloss-mean</th>\n",
       "      <th>train-mlogloss-std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1.957133</td>\n",
       "      <td>0.000806</td>\n",
       "      <td>1.955564</td>\n",
       "      <td>0.001335</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1.785371</td>\n",
       "      <td>0.000738</td>\n",
       "      <td>1.782810</td>\n",
       "      <td>0.001322</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>1.649457</td>\n",
       "      <td>0.000877</td>\n",
       "      <td>1.645860</td>\n",
       "      <td>0.001608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>1.537327</td>\n",
       "      <td>0.000630</td>\n",
       "      <td>1.532956</td>\n",
       "      <td>0.001598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>1.443652</td>\n",
       "      <td>0.000704</td>\n",
       "      <td>1.438471</td>\n",
       "      <td>0.001036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>1.363638</td>\n",
       "      <td>0.000796</td>\n",
       "      <td>1.357667</td>\n",
       "      <td>0.001235</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>1.294293</td>\n",
       "      <td>0.001085</td>\n",
       "      <td>1.287640</td>\n",
       "      <td>0.001137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>7</td>\n",
       "      <td>1.232981</td>\n",
       "      <td>0.001594</td>\n",
       "      <td>1.225572</td>\n",
       "      <td>0.001375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>8</td>\n",
       "      <td>1.179006</td>\n",
       "      <td>0.001369</td>\n",
       "      <td>1.170946</td>\n",
       "      <td>0.001241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>9</td>\n",
       "      <td>1.131588</td>\n",
       "      <td>0.001206</td>\n",
       "      <td>1.122793</td>\n",
       "      <td>0.001086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>10</td>\n",
       "      <td>1.088893</td>\n",
       "      <td>0.001598</td>\n",
       "      <td>1.079478</td>\n",
       "      <td>0.000844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>11</td>\n",
       "      <td>1.050902</td>\n",
       "      <td>0.001835</td>\n",
       "      <td>1.040914</td>\n",
       "      <td>0.000733</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>12</td>\n",
       "      <td>1.016637</td>\n",
       "      <td>0.001695</td>\n",
       "      <td>1.005948</td>\n",
       "      <td>0.000848</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>13</td>\n",
       "      <td>0.985869</td>\n",
       "      <td>0.001625</td>\n",
       "      <td>0.974638</td>\n",
       "      <td>0.000990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>14</td>\n",
       "      <td>0.957703</td>\n",
       "      <td>0.001723</td>\n",
       "      <td>0.945891</td>\n",
       "      <td>0.001057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>15</td>\n",
       "      <td>0.931880</td>\n",
       "      <td>0.001742</td>\n",
       "      <td>0.919463</td>\n",
       "      <td>0.001098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>16</td>\n",
       "      <td>0.908832</td>\n",
       "      <td>0.001927</td>\n",
       "      <td>0.895907</td>\n",
       "      <td>0.000886</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>17</td>\n",
       "      <td>0.887379</td>\n",
       "      <td>0.002267</td>\n",
       "      <td>0.873983</td>\n",
       "      <td>0.000654</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>18</td>\n",
       "      <td>0.868349</td>\n",
       "      <td>0.002371</td>\n",
       "      <td>0.854222</td>\n",
       "      <td>0.000639</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>19</td>\n",
       "      <td>0.850711</td>\n",
       "      <td>0.002408</td>\n",
       "      <td>0.835976</td>\n",
       "      <td>0.000680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>20</td>\n",
       "      <td>0.834507</td>\n",
       "      <td>0.002194</td>\n",
       "      <td>0.819263</td>\n",
       "      <td>0.000902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>21</td>\n",
       "      <td>0.819644</td>\n",
       "      <td>0.002193</td>\n",
       "      <td>0.803943</td>\n",
       "      <td>0.000854</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>22</td>\n",
       "      <td>0.805978</td>\n",
       "      <td>0.002267</td>\n",
       "      <td>0.789811</td>\n",
       "      <td>0.000853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>23</td>\n",
       "      <td>0.793243</td>\n",
       "      <td>0.002420</td>\n",
       "      <td>0.776509</td>\n",
       "      <td>0.000680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>24</td>\n",
       "      <td>0.781688</td>\n",
       "      <td>0.002520</td>\n",
       "      <td>0.764411</td>\n",
       "      <td>0.000555</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>25</td>\n",
       "      <td>0.770958</td>\n",
       "      <td>0.002569</td>\n",
       "      <td>0.753116</td>\n",
       "      <td>0.000624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>26</td>\n",
       "      <td>0.761290</td>\n",
       "      <td>0.002604</td>\n",
       "      <td>0.743006</td>\n",
       "      <td>0.000723</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>27</td>\n",
       "      <td>0.751867</td>\n",
       "      <td>0.002462</td>\n",
       "      <td>0.733161</td>\n",
       "      <td>0.000913</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>28</td>\n",
       "      <td>0.743439</td>\n",
       "      <td>0.002356</td>\n",
       "      <td>0.724189</td>\n",
       "      <td>0.001159</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>29</td>\n",
       "      <td>0.735403</td>\n",
       "      <td>0.002307</td>\n",
       "      <td>0.715724</td>\n",
       "      <td>0.001195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>232</th>\n",
       "      <td>232</td>\n",
       "      <td>0.592600</td>\n",
       "      <td>0.002759</td>\n",
       "      <td>0.496520</td>\n",
       "      <td>0.001152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>233</th>\n",
       "      <td>233</td>\n",
       "      <td>0.592556</td>\n",
       "      <td>0.002832</td>\n",
       "      <td>0.496188</td>\n",
       "      <td>0.001211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>234</th>\n",
       "      <td>234</td>\n",
       "      <td>0.592536</td>\n",
       "      <td>0.002818</td>\n",
       "      <td>0.495802</td>\n",
       "      <td>0.001239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>235</th>\n",
       "      <td>235</td>\n",
       "      <td>0.592439</td>\n",
       "      <td>0.002840</td>\n",
       "      <td>0.495503</td>\n",
       "      <td>0.001236</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>236</th>\n",
       "      <td>236</td>\n",
       "      <td>0.592489</td>\n",
       "      <td>0.002768</td>\n",
       "      <td>0.495215</td>\n",
       "      <td>0.001221</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>237</th>\n",
       "      <td>237</td>\n",
       "      <td>0.592489</td>\n",
       "      <td>0.002742</td>\n",
       "      <td>0.494903</td>\n",
       "      <td>0.001139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>238</th>\n",
       "      <td>238</td>\n",
       "      <td>0.592570</td>\n",
       "      <td>0.002697</td>\n",
       "      <td>0.494556</td>\n",
       "      <td>0.001111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>239</th>\n",
       "      <td>239</td>\n",
       "      <td>0.592550</td>\n",
       "      <td>0.002628</td>\n",
       "      <td>0.494198</td>\n",
       "      <td>0.001138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>240</th>\n",
       "      <td>240</td>\n",
       "      <td>0.592512</td>\n",
       "      <td>0.002619</td>\n",
       "      <td>0.493845</td>\n",
       "      <td>0.001158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>241</th>\n",
       "      <td>241</td>\n",
       "      <td>0.592448</td>\n",
       "      <td>0.002560</td>\n",
       "      <td>0.493494</td>\n",
       "      <td>0.001214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>242</th>\n",
       "      <td>242</td>\n",
       "      <td>0.592495</td>\n",
       "      <td>0.002538</td>\n",
       "      <td>0.493088</td>\n",
       "      <td>0.001201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>243</th>\n",
       "      <td>243</td>\n",
       "      <td>0.592484</td>\n",
       "      <td>0.002461</td>\n",
       "      <td>0.492752</td>\n",
       "      <td>0.001227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>244</th>\n",
       "      <td>244</td>\n",
       "      <td>0.592437</td>\n",
       "      <td>0.002456</td>\n",
       "      <td>0.492473</td>\n",
       "      <td>0.001202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>245</th>\n",
       "      <td>245</td>\n",
       "      <td>0.592441</td>\n",
       "      <td>0.002523</td>\n",
       "      <td>0.492138</td>\n",
       "      <td>0.001274</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>246</th>\n",
       "      <td>246</td>\n",
       "      <td>0.592387</td>\n",
       "      <td>0.002481</td>\n",
       "      <td>0.491829</td>\n",
       "      <td>0.001236</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>247</th>\n",
       "      <td>247</td>\n",
       "      <td>0.592392</td>\n",
       "      <td>0.002438</td>\n",
       "      <td>0.491461</td>\n",
       "      <td>0.001290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>248</th>\n",
       "      <td>248</td>\n",
       "      <td>0.592386</td>\n",
       "      <td>0.002416</td>\n",
       "      <td>0.491183</td>\n",
       "      <td>0.001221</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>249</th>\n",
       "      <td>249</td>\n",
       "      <td>0.592327</td>\n",
       "      <td>0.002422</td>\n",
       "      <td>0.490847</td>\n",
       "      <td>0.001227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>250</th>\n",
       "      <td>250</td>\n",
       "      <td>0.592271</td>\n",
       "      <td>0.002408</td>\n",
       "      <td>0.490499</td>\n",
       "      <td>0.001221</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>251</th>\n",
       "      <td>251</td>\n",
       "      <td>0.592219</td>\n",
       "      <td>0.002351</td>\n",
       "      <td>0.490203</td>\n",
       "      <td>0.001270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>252</th>\n",
       "      <td>252</td>\n",
       "      <td>0.592201</td>\n",
       "      <td>0.002343</td>\n",
       "      <td>0.489855</td>\n",
       "      <td>0.001254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>253</th>\n",
       "      <td>253</td>\n",
       "      <td>0.592275</td>\n",
       "      <td>0.002328</td>\n",
       "      <td>0.489567</td>\n",
       "      <td>0.001208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>254</th>\n",
       "      <td>254</td>\n",
       "      <td>0.592302</td>\n",
       "      <td>0.002308</td>\n",
       "      <td>0.489270</td>\n",
       "      <td>0.001228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>255</th>\n",
       "      <td>255</td>\n",
       "      <td>0.592350</td>\n",
       "      <td>0.002327</td>\n",
       "      <td>0.488964</td>\n",
       "      <td>0.001242</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>256</th>\n",
       "      <td>256</td>\n",
       "      <td>0.592351</td>\n",
       "      <td>0.002347</td>\n",
       "      <td>0.488727</td>\n",
       "      <td>0.001171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>257</th>\n",
       "      <td>257</td>\n",
       "      <td>0.592286</td>\n",
       "      <td>0.002395</td>\n",
       "      <td>0.488331</td>\n",
       "      <td>0.001185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>258</th>\n",
       "      <td>258</td>\n",
       "      <td>0.592213</td>\n",
       "      <td>0.002340</td>\n",
       "      <td>0.487989</td>\n",
       "      <td>0.001199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>259</th>\n",
       "      <td>259</td>\n",
       "      <td>0.592138</td>\n",
       "      <td>0.002422</td>\n",
       "      <td>0.487649</td>\n",
       "      <td>0.001218</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260</th>\n",
       "      <td>260</td>\n",
       "      <td>0.592183</td>\n",
       "      <td>0.002366</td>\n",
       "      <td>0.487297</td>\n",
       "      <td>0.001224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261</th>\n",
       "      <td>261</td>\n",
       "      <td>0.592108</td>\n",
       "      <td>0.002417</td>\n",
       "      <td>0.486961</td>\n",
       "      <td>0.001233</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>262 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     n_estimators  test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
       "0               0            1.957133           0.000806             1.955564   \n",
       "1               1            1.785371           0.000738             1.782810   \n",
       "2               2            1.649457           0.000877             1.645860   \n",
       "3               3            1.537327           0.000630             1.532956   \n",
       "4               4            1.443652           0.000704             1.438471   \n",
       "5               5            1.363638           0.000796             1.357667   \n",
       "6               6            1.294293           0.001085             1.287640   \n",
       "7               7            1.232981           0.001594             1.225572   \n",
       "8               8            1.179006           0.001369             1.170946   \n",
       "9               9            1.131588           0.001206             1.122793   \n",
       "10             10            1.088893           0.001598             1.079478   \n",
       "11             11            1.050902           0.001835             1.040914   \n",
       "12             12            1.016637           0.001695             1.005948   \n",
       "13             13            0.985869           0.001625             0.974638   \n",
       "14             14            0.957703           0.001723             0.945891   \n",
       "15             15            0.931880           0.001742             0.919463   \n",
       "16             16            0.908832           0.001927             0.895907   \n",
       "17             17            0.887379           0.002267             0.873983   \n",
       "18             18            0.868349           0.002371             0.854222   \n",
       "19             19            0.850711           0.002408             0.835976   \n",
       "20             20            0.834507           0.002194             0.819263   \n",
       "21             21            0.819644           0.002193             0.803943   \n",
       "22             22            0.805978           0.002267             0.789811   \n",
       "23             23            0.793243           0.002420             0.776509   \n",
       "24             24            0.781688           0.002520             0.764411   \n",
       "25             25            0.770958           0.002569             0.753116   \n",
       "26             26            0.761290           0.002604             0.743006   \n",
       "27             27            0.751867           0.002462             0.733161   \n",
       "28             28            0.743439           0.002356             0.724189   \n",
       "29             29            0.735403           0.002307             0.715724   \n",
       "..            ...                 ...                ...                  ...   \n",
       "232           232            0.592600           0.002759             0.496520   \n",
       "233           233            0.592556           0.002832             0.496188   \n",
       "234           234            0.592536           0.002818             0.495802   \n",
       "235           235            0.592439           0.002840             0.495503   \n",
       "236           236            0.592489           0.002768             0.495215   \n",
       "237           237            0.592489           0.002742             0.494903   \n",
       "238           238            0.592570           0.002697             0.494556   \n",
       "239           239            0.592550           0.002628             0.494198   \n",
       "240           240            0.592512           0.002619             0.493845   \n",
       "241           241            0.592448           0.002560             0.493494   \n",
       "242           242            0.592495           0.002538             0.493088   \n",
       "243           243            0.592484           0.002461             0.492752   \n",
       "244           244            0.592437           0.002456             0.492473   \n",
       "245           245            0.592441           0.002523             0.492138   \n",
       "246           246            0.592387           0.002481             0.491829   \n",
       "247           247            0.592392           0.002438             0.491461   \n",
       "248           248            0.592386           0.002416             0.491183   \n",
       "249           249            0.592327           0.002422             0.490847   \n",
       "250           250            0.592271           0.002408             0.490499   \n",
       "251           251            0.592219           0.002351             0.490203   \n",
       "252           252            0.592201           0.002343             0.489855   \n",
       "253           253            0.592275           0.002328             0.489567   \n",
       "254           254            0.592302           0.002308             0.489270   \n",
       "255           255            0.592350           0.002327             0.488964   \n",
       "256           256            0.592351           0.002347             0.488727   \n",
       "257           257            0.592286           0.002395             0.488331   \n",
       "258           258            0.592213           0.002340             0.487989   \n",
       "259           259            0.592138           0.002422             0.487649   \n",
       "260           260            0.592183           0.002366             0.487297   \n",
       "261           261            0.592108           0.002417             0.486961   \n",
       "\n",
       "     train-mlogloss-std  \n",
       "0              0.001335  \n",
       "1              0.001322  \n",
       "2              0.001608  \n",
       "3              0.001598  \n",
       "4              0.001036  \n",
       "5              0.001235  \n",
       "6              0.001137  \n",
       "7              0.001375  \n",
       "8              0.001241  \n",
       "9              0.001086  \n",
       "10             0.000844  \n",
       "11             0.000733  \n",
       "12             0.000848  \n",
       "13             0.000990  \n",
       "14             0.001057  \n",
       "15             0.001098  \n",
       "16             0.000886  \n",
       "17             0.000654  \n",
       "18             0.000639  \n",
       "19             0.000680  \n",
       "20             0.000902  \n",
       "21             0.000854  \n",
       "22             0.000853  \n",
       "23             0.000680  \n",
       "24             0.000555  \n",
       "25             0.000624  \n",
       "26             0.000723  \n",
       "27             0.000913  \n",
       "28             0.001159  \n",
       "29             0.001195  \n",
       "..                  ...  \n",
       "232            0.001152  \n",
       "233            0.001211  \n",
       "234            0.001239  \n",
       "235            0.001236  \n",
       "236            0.001221  \n",
       "237            0.001139  \n",
       "238            0.001111  \n",
       "239            0.001138  \n",
       "240            0.001158  \n",
       "241            0.001214  \n",
       "242            0.001201  \n",
       "243            0.001227  \n",
       "244            0.001202  \n",
       "245            0.001274  \n",
       "246            0.001236  \n",
       "247            0.001290  \n",
       "248            0.001221  \n",
       "249            0.001227  \n",
       "250            0.001221  \n",
       "251            0.001270  \n",
       "252            0.001254  \n",
       "253            0.001208  \n",
       "254            0.001228  \n",
       "255            0.001242  \n",
       "256            0.001171  \n",
       "257            0.001185  \n",
       "258            0.001199  \n",
       "259            0.001218  \n",
       "260            0.001224  \n",
       "261            0.001233  \n",
       "\n",
       "[262 rows x 5 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nestimators = pd.read_csv('Desktop/1_nestimators.csv')\n",
    "nestimators"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到，最佳的n_estimators参数是261"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
